package obstaculo;

import javax.swing.JLabel;

import nivel.*;
import sprite.estatico.SpriteObstaculo;

/**
 * Clase abstracta utilizada para factorizar las propiedades de los obstaculos
 * logicos
 * 
 * @author Agustin Orge (LU.85538)
 * @author Victoria Martinez de la Cruz (LU.87620)
 */
public abstract class Obstaculo {

	/** Casillero actual */
	protected Casillero casilleroActual;

	/** Icono del obstaculo */
	protected SpriteObstaculo icono;

	protected JLabel label;

	/**
	 * Constructor de un obstaculo
	 * 
	 * Recibe el casillero al que quedara asociado
	 * 
	 * @param ca
	 *            casillero que contendra al obstaculo
	 */
	protected Obstaculo(Casillero ca, SpriteObstaculo so) {
		casilleroActual = ca;
		casilleroActual.setObstaculo(this);
		icono = so;
		label = new JLabel();
		label.setLocation(casilleroActual.getX(), casilleroActual.getY());
	}

	// comandos
	/**
	 * Reaccion al encontrarse con un personaje
	 * 
	 * @return true, si puede atravesarse y false en caso contrario
	 */
	public boolean reaccionar() {

		return false;
	}

	/**
	 * Reaccion al encontrarse con un powerup
	 * 
	 * @return true, si puede atravesarse y false en caso contrario
	 */

	public boolean reaccionarPowerUp() {

		if (casilleroActual.hayPowerUp()) {
			casilleroActual.getPowerUp().activar();
		}

		return false;
	}

	/**
	 * Retorna la etiqueta asociada al obstaculo
	 * 
	 * @return
	 */
	public JLabel getLabel() {
		return label;
	}

	/**
	 * Si Mario tiene un HongoRojo (es SuperMario), puede romper ciertos
	 * obstaculos
	 * 
	 * @param nivel
	 *            nivel al cual el obstaculo esta asociado
	 */
	public void romper(Nivel nivel) {
	}

}
